<?php
/**
 * Implenta las funciones necesarias para gestionar cristal
 *
 * @author Daniel Cardoza, Gary Dos Santos, Freddy Rodriguez
 */
class DBVentanaDAO {

    private $DBConn = null;

    public function  __construct() {
        $conexion = new conexion();
        $this->DBConn = $conexion->setConnect();
    }

     /**
     *Devuelve un vector con los precios del id de la ventana que entra por parametro
     * y el colorAluminio es el numero del tipo de aluminio
     *
     * @param <int> $id
     * @param <int> $colorAluminio
     * @return <Array> $precio
     * @test
     *
     */
    public function getPrecio( $id , $colorAluminio ) {

        switch ( $colorAluminio ){
            case "1" :
                $this->DBConn->consulta( "SELECT CVT_ANCHO_COLOR, CVT_ALTO_COLOR, CVT_ACCESORIO
                                        FROM costo_ventana
                                        WHERE CVT_ID = $id
                                        AND CVT_STATUS = 1" );

                if ( $this->DBConn->filasAfectadas() != -1){
                    $fila = $this->DBConn->extraer_registro();
                    $precio['ANCHO_COLOR'] = $fila['CVT_ANCHO_COLOR'];
                    $precio['ALTO_COLOR'] = $fila['CVT_ALTO_COLOR'];
                    $precio['ACCESORIO'] = $fila['CVT_ACCESORIO'];
                    return $precio;
                } else {
                    return false;
                }
                break;

            case "2" :
                $this->DBConn->consulta( "SELECT CVT_ANCHO_OTRO_COLOR, CVT_ALTO_OTRO_COLOR, CVT_ACCESORIO
                                        FROM costo_ventana
                                        WHERE CVT_ID = $id
                                        AND CVT_STATUS = 1" );

                if ( $this->DBConn->filasAfectadas() != -1){
                    $fila = $this->DBConn->extraer_registro();
                    $precio['ANCHO_COLOR'] = $fila['CVT_ANCHO_OTRO_COLOR'];
                    $precio['ALTO_COLOR'] = $fila['CVT_ALTO_OTRO_COLOR'];
                    $precio['ACCESORIO'] = $fila['CVT_ACCESORIO'];
                    return $precio;
                } else {
                    return false;
                }
                break;

        }


    }

    /**
     * Setea un bloque con la informacion de la ventana
     *
     * @param <panel> $plantillaCON
     * @param <block> $block
     * @test
     */
    public function setBlockNombre( $plantillaCON , $block ) {
        $hBlock = $plantillaCON->setBlock( $block );
        $this->DBConn->consulta( "SELECT CVT_ID, CVT_NOMBRE
                            FROM costo_ventana
                            WHERE CVT_STATUS = 1
                            AND CVT_STATUS = 1
                            GROUP BY CVT_NOMBRE" );

        while ( $fila = $this->DBConn->extraer_registro() ) {
            $plantillaCON->add( $fila );
            $plantillaCON->concat( $hBlock );
        }

    }

    /**
     * Setea un bloque con la informacion del color de la ventana
     *
     * @param <panel> $plantillaCON
     * @param <block> $block
     * @test
     */
    public function setBlockColor( $plantillaCON , $block, $id ) {
        $hBlock = $plantillaCON->setBlock( $block );
        $this->DBConn->consulta( "SELECT CCR_ID, CCR_COLOR
                                FROM costo_cristal
                                WHERE CCR_ESPESOR IN (
                                SELECT PVC_ESPESOR
                                FROM puerta_ventana_cristal
                                WHERE PVC_CVT_ID = $id
                                AND PVC_STATUS = 1)
                                AND CCR_STATUS = 1
                                GROUP BY CCR_COLOR" );

        while ( $fila = $this->DBConn->extraer_registro() ) {
            $plantillaCON->add( $fila );
            $plantillaCON->concat( $hBlock );
        }

    }

    /**
     * Setea un bloque con la informacion del cristal de la ventana
     *
     * @param <panel> $plantillaCON
     * @param <block> $block
     * @test
     */
    public function setBlockCristal( $plantillaCON , $block, $id, $color ) {
        $hBlock = $plantillaCON->setBlock( $block );
        $this->DBConn->consulta( "SELECT CCR_ID, CCR_NOMBRE,CCR_COLOR, CCR_ESPESOR
                                FROM costo_cristal
                                WHERE CCR_ESPESOR IN (
                                SELECT PVC_ESPESOR
                                FROM puerta_ventana_cristal
                                WHERE PVC_CVT_ID = $id
                                AND PVC_STATUS = 1)
                                AND CCR_COLOR IN (
                                SELECT CCR_COLOR
                                FROM costo_cristal
                                WHERE CCR_ID = $color
                                AND CCR_STATUS = 1)
                                AND CCR_STATUS = 1
                                GROUP BY CCR_NOMBRE" );

        while ( $fila = $this->DBConn->extraer_registro() ) {
            $plantillaCON->add( $fila );
            $plantillaCON->concat( $hBlock );
        }

    }

     /**
     * Setea un bloque con la informacion del espesor de la ventana
     *
     * @param <panel> $plantillaCON
     * @param <block> $block
     * @test
     */
    public function setBlockEspesor( $plantillaCON , $block, $id, $idCristal ) {

        $hBlock = $plantillaCON->setBlock( $block );
        $this->DBConn->consulta( "SELECT PVC_ID, PVC_ESPESOR
                                FROM puerta_ventana_cristal, costo_cristal
                                WHERE PVC_CVT_ID = $id AND PVC_ESPESOR IN (
                                SELECT CCR_ESPESOR
                                FROM costo_cristal
                                WHERE CCR_ESPESOR IN (
                                SELECT PVC_ESPESOR
                                FROM puerta_ventana_cristal
                                WHERE PVC_CVT_ID = $id AND PVC_STATUS = 1)
                                AND CCR_COLOR IN (
                                SELECT CCR_COLOR
                                FROM Costo_cristal
                                WHERE CCR_ID = $idCristal)
                                AND CCR_NOMBRE IN (
                                SELECT CCR_NOMBRE
                                FROM Costo_cristal
                                WHERE CCR_ID = $idCristal)
                                AND CCR_STATUS = 1
                                GROUP BY CCR_ESPESOR)
                                GROUP BY PVC_ESPESOR" );

        while ( $fila = $this->DBConn->extraer_registro() ) {
            $plantillaCON->add( $fila );
            $plantillaCON->concat( $hBlock );
        }

    }

     /**
     * Setea un bloque con la informacion del esmerilado
     *
     * @param <panel> $plantillaCON
     * @param <block> $block
     * @test
     */
    public function setBlockEsmerilado( $plantillaCON , $block ) {
        $hBlock = $plantillaCON->setBlock( $block );
        $this->DBConn->consulta( "SELECT *
                            FROM costo_trabajos_varios
                            WHERE CTV_TIPO = 3
                            AND CTV_STATUS = 1" );

        while ( $fila = $this->DBConn->extraer_registro() ) {
            $plantillaCON->add( $fila );
            $plantillaCON->concat( $hBlock );
        }

    }

     /**
     *Devuelve el espesor del id de la ventana que entra por parametro
     *
     * @param <int> $id
     * @return <int> $fila['PVC_ESPESOR']
     * @return <bool> false
     * @test
     *
     */
    public function getEspesor( $id ) {
        $this->DBConn->consulta( "SELECT PVC_ESPESOR
                            FROM puerta_ventana_cristal
                            WHERE PVC_ID = $id
                            AND PVC_STATUS = 1" );

        if ( $this->DBConn->filasAfectadas() != -1){
            $fila = $this->DBConn->extraer_registro();
            return $fila['PVC_ESPESOR'];
        } else {
            return false;
        }

    }

     /**
     *Devuelve el nombre del id de la ventana que entra por parametro
     *
     * @param <int> $id
     * @return <int> $fila['CPT_NOMBRE']
     * @return <bool> false
     * @test
     *
     */
    public function getNombre( $id ) {
        $this->DBConn->consulta( "SELECT CVT_NOMBRE
                            FROM costo_ventana
                            WHERE CVT_ID = $id
                            AND CVT_STATUS = 1" );

        if ( $this->DBConn->filasAfectadas() != -1){
            $fila = $this->DBConn->extraer_registro();
            return $fila['CVT_NOMBRE'];
        } else {
            return false;
        }

    }

     /**
     *Devuelve el precio de la instalacion del id de la ventana que entra por parametro
     *
     * @param <int> $id
     * @return <int> $fila['CSI_PRECIO']
     * @return <bool> false
     * @test
     *
     */
    public function getInstalacion( $nombre ) {
        $this->DBConn->consulta( "SELECT CSI_PRECIO
                            FROM costo_suministro_instalacion
                            WHERE CSI_NOMBRE = '$nombre'
                            AND CSI_TIPO = 1
                            AND CSI_STATUS = 1" );

        if ( $this->DBConn->filasAfectadas() != -1){
            $fila = $this->DBConn->extraer_registro();
            return $fila['CSI_PRECIO'];
        } else {
            return false;
        }

    }

     /**
     *Insertar una ventana en la base de datos y lo asigna al id del presupuesto
     * que se pasa por parametro
     *
     * @param <Cristal> $cristal
     * @param <int> $PTO_ID
     * @return <bool> true
     * @return <bool> false
     * @test
     *
     */
    public function setVentana( Ventana $ventana , $PTO_ID ) {
        $alto = $ventana->getAlto();
        $ancho = $ventana->getAncho();
        $cantidad = $ventana->getCantidad();
        $color = $ventana->getColor();
        $cristal = $ventana->getCristal();
        $cristalColor  = $ventana->getCristalColor();
        $esmerilado = $ventana->getEsmerilado();
        $nombre = $ventana->getNombre();
        $precioAccesorio  = $ventana->getPrecioAccesorio();
        $precioAlto  = $ventana->getPrecioAlto();
        $precioAncho  = $ventana->getPrecioAncho();
        $precioCristal  = $ventana->getPrecioCristal();
        $espesor  = $ventana->getEspesor();
        $instalacion = $ventana->getInstalacion();
        $subTotal  = $ventana->calcularSubTotal();

        $this->DBConn->consulta( "INSERT INTO `ventana` (`VTA_NOMBRE`, `VTA_COLOR`, `VTA_CRISTAL`,
                                `VTA_CRISTAL_COLOR`, `VTA_ESPESOR`, `VTA_ANCHO`, `VTA_ALTO`,
                                `VTA_PRECIO_ANCHO`, `VTA_PRECIO_ALTO`, `VTA_PRECIO_ACCESORIO`, `VTA_PRECIO_CRISTAL`,
                                `VTA_PRECIO_ESMERILADO`,`VTA_PRECIO_INSTALACION`, `VTA_CANTIDAD`)
                                VALUES ('$nombre', '$color', '$cristal', '$cristalColor', 
                                $espesor, $ancho, $alto, $precioAncho, $precioAlto, $precioAccesorio,
                                $precioCristal, $esmerilado, $instalacion, $cantidad);" );

        $this->DBConn->consulta( "SELECT VTA_ID FROM Ventana
                        WHERE VTA_NOMBRE = '$nombre'
                        AND VTA_CRISTAL = '$cristal'
                        AND VTA_COLOR = '$color'
                        AND VTA_CRISTAL_COLOR = '$cristalColor'
                        AND VTA_ESPESOR = $espesor
                        AND VTA_ANCHO = $ancho
                        AND VTA_ALTO = $alto
                        AND VTA_PRECIO_ANCHO = $precioAncho
                        AND VTA_PRECIO_ALTO = $precioAlto
                        AND VTA_PRECIO_ACCESORIO = $precioAccesorio
                        AND VTA_PRECIO_CRISTAL = $precioCristal
                        AND VTA_PRECIO_ESMERILADO = $esmerilado
                        AND VTA_CANTIDAD = $cantidad
                        AND VTA_STATUS = 1
                        ORDER BY VTA_ID DESC " );

        $fila = $this->DBConn->extraer_registro();
            $id = $fila[ 'VTA_ID' ];

        $subTotal = $ventana->calcularSubTotal();
        $this->DBConn->consulta( "INSERT INTO detalle_presupuesto (DPR_SUB_TOTAL,DPR_PTO_ID,DPR_VTA_ID)
                                VALUES ($subTotal, $PTO_ID, $id)" );

        if ( $this->DBConn->filasAfectadas() != -1){
            return true;
        } else {
            return false;
        }

    }

}
?>
